# 作业：
# 1、编写一个学生方法，产生一堆学生对象（姓名），传入形参控制学生生成数量
# def born(num:int):
#  for i in range(num):
#         student=Faker(locale='zh_cn')
#         print(student.name())
# from faker import Faker
# import random
# import datetime
# def student(count):
#      student_list = []
#      faker = Faker(locale='zh_cn')
#      for i in range(count):
#          student_list.append(faker.name())
#      return student_list
 # 2、创建一个方法，用来生成普通人必备的信息：姓名、年龄、住址、身份证号、手机号，随机生成20个写入personinfo.txt里
# 格式：姓名：xxx  年龄：xxx 住址：xxx 身份证号：xxx
# def person():
#     faker = Faker(locale='zh_cn')
#     for i in range(20):
#         age = random.randint(18,60)
#         with open('person.txt','a',encoding='utf-8') as f:
#             f.write("姓名：" + str(faker.name()) + " 年龄：" + str(age) + " 住址：" + str(faker.address()) + " 身份证号码：" + str(faker.ssn(min_age = 18,max_age = 60)) + "\n")
#     person()
# 3、文本 student.txt中包含下面的内容
# zhangshan:30
# lisi:50
# wangwu:60
# lifei:70
# 期望能够统计出其中的内容，以dict的形式保存，例如：
# {"zhangshan":30,"lisi":50,"wangwu":60,"lifei":70}
# dict1 = {}
# with open('student.txt','r',encoding='utf-8') as f:
#  for i in f.readlines():
#         dict1[i.split(':')[0]] = int(i.strip().split(':')[1])
# print(dict1)
# 4、给你一个 非空 整数数组 nums ，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。
# for i in nums:
#      if nums.count(i) == 1:
#         print(i)
# 5、输入：["1","a","b","3","5","8","_"] 想要提取里面得数字，并保存到一个列表中
# list1 = ["1","a","b","3","5","8","_"]
# result = []
# for i in list1:
#     if i in "0123456789":
#         result.append(i)
# print(result)
# 6、写函数,函数接收的4个参数分别是:姓名,性别(默认为男),年龄,地址
# 用户通过input输入这4个内容(支持持续输入,Q或q退出),并传递给函数
# 函数接收到这些内容,将其追加到student_msg文件中
# 重点:复习文件操作
# def student_info():
#     result = []
#     while True:
#         dict1 = {}
#         name = input("请输入姓名")
#         dict1['姓名'] = name
#         if name == 'Q' or name =='q':
#             break
#         sex = input("请输入性别")
#         if sex == "" or sex == " ":
#             sex = "男"
#         dict1['性别'] = sex
#         if sex == 'Q' or sex =='q':
#             break
#         age = input("请输入年龄")
#         dict1['年龄'] = age
#         if age == 'Q' or age =='q':
#             break
#         address = input("请输入地址")
#         dict1['地址'] = address
#         if address == 'Q' or address =='q':
#             break
#         with open('student_msg.txt','r',encoding='utf-8') as f:
#             for i in f.readlines():
#                 result.append(i.strip().split('性别')[0])
#         if "姓名："+str(name)+" " not in result:
#             with open('student_msg.txt', 'a', encoding='utf-8') as f:
#                 f.write("姓名：" + dict1['姓名'] + " 性别：" + dict1['性别'] + " 年龄：" + dict1['年龄'] + " 地址：" + dict1['地址'] + "\n")
#         else:
#             print("您要添加的姓名已经存在了，无法继续添加！")
# student_info()
#  7、打印功能菜单、添加学生信息、删除学生信息、修改学生信息、显示学生信息、退出系统，并且需要接收用户的输入，在根据输入内容调用相应函数实现相应功能（存入文件），模板图如下。每次对学生管理系统发生改动，要写入改动点到log.txt文本中
#def student_msg():
result = []
keys_list = []
while True:
        print("1. 添加学生信息")
        print("2. 删除学生信息")
        print("3. 修改学生信息")
        print("4. 显示学生信息")
        print("5. 退出系统")
        xu = input("请您选择序号")
        if xu == "1":
            name = input("请输入您要添加的学生姓名")
            age = input("请输入您要添加的学生年龄")
            address = input("请输入您要添加的学生地址")
            phone = input("请输入您要添加的学生手机号码")
            sex = input("请输入您要添加的学生性别")
            result.append({name:{"年龄":age,"地址":address,"手机号":phone,"性别":sex}})
            with open("student_message.txt",'w',encoding='utf-8') as f:
                for i in result:
                    f.write(str(i) + "\n")
            with open('log.txt','a',encoding='utf-8') as f:
                f.write(str(datetime.datetime.now()) + "添加了学生名字为："+name+"的学生信息" + "\n")
        elif xu =='2':
            name = input("请输入您要删除的学生名称")
            for i in result:
                for key, value in i.items():
                    keys_list.append(key)
            if name in keys_list:
                for i in result:
                    if name in i.keys(): # ['关博文','李钰皓']
                        result.remove(i)
                        print(f"您要删除的学生姓名：{name}，已经删除成功了！")
            else:
                print("您要删除的学生姓名不存在")
            with open("student_message.txt", 'w', encoding='utf-8') as f:
                for i in result:
                    f.write(str(i) + "\n")
            with open('log.txt','a',encoding='utf-8') as f:
                f.write(str(datetime.datetime.now()) + "删除了学生名字为："+name+"的学生信息" + "\n")
        elif xu == '3':
            old_name = input("请输入您要修改的学生姓名")
            new_name = input("请输入您要修改后的学生姓名")
            age = input("请输入您要修改的学生年龄")
            address = input("请输入您要修改的学生地址")
            phone = input("请输入您要修改的学生手机号码")
            sex = input("请输入您要修改的学生性别")
            for i in result:
                for key, value in i.items():
                    keys_list.append(key)
            if old_name in keys_list:
                for i in result:
                    if old_name in i.keys():
                        result.remove(i)
                        result.append({new_name: {"年龄": age, "地址": address, "手机号": phone, "性别": sex}})
            else:
                print("您要修改的学生姓名不存在")
            with open("student_message.txt", 'w', encoding='utf-8') as f:
                for i in result:
                    f.write(str(i) + "\n")
            with open('log.txt','a',encoding='utf-8') as f:
                f.write(str(datetime.datetime.now()) + "原来的学生姓名为：" + old_name + " 改为：" + new_name + "\n")
        elif xu == '4':
            if result:
                with open('student_message.txt','r',encoding='utf-8') as f:
                    print(f.read())
            else:
                print("学生信息列表为空！")
        elif xu =='5':
            print("欢迎您下次再来学生管理系统")
            print("再见！")
            break
        else:
            print("您选择序号有误，请重新选择！")

# student_msg()
# 8、如今的社交软件层出不穷，虽然功能千变万化，但都具有好友管理系统的基本功能，包括添加好友、删除好友、备注好友、展示好友等。下面是一个简单的好友管理系统的功能菜单（存入文件）
#
# 好友管理系统中有5个功能，每个功能都对应一个序号，用户可根据提示“请输入您的选项”选择序号执行相应的操作，包括：
#
# 添加好友：用户根据提示“请输入要添加的好友：”输入要添加好友的姓名，添加后会提示“好友添加成功”。
# friend=(1)
# def add_friend():
#     friend_name = input("请输入要添加的好友：")
#     friends.append(friend_name)
#     print("好友添加成功")
# 删除好友：用户根据提示“请输入删除好友姓名：”输入要删除好友的姓名，删除后提示“删除成功”。
# def delete_friend():
#  friend_name = input("请输入删除好友姓名：")
#  if friend_name in friends:
#   friends.remove(friend_name)
#   print("删除成功")
#  else:
#   print("好友不存在")
 # 备注好友：用户根据提示“请输入要修改的好友姓名：”和“请输入修改后的好友姓名：”分别输入修改前和修改后的好友姓名，修改后会提示“备注成功”。
# def备注好友():
#     old_name = input("请输入要修改的好友姓名：")
#     new_name = input("请输入修改后的好友姓名：")
#     if old_name in friends:d
#    index = friends.index(old_name)
#  friends[index] = new_name
#       print("备注成功")
#     else:
#         print("好友不存在")

# 展示好友：若用户还没有添加过好友，提示“好友列表为空”，否则返回每个好友的姓名。
#def展示好友():
    #    if not friends:
    #     print("好友列表为空")
    # else:
    #     for friend in friends:
    #         print(friend)

# 退出：关闭好友管理系统。
